// package main
package qsort
// import "fmt"

func quickSort(values []int, left, right int){
	temp := values[left]
	p := left
	i, j := left, right

	for i <= j{
		for j >= p && values[j] >= temp{
			j--
		}

		if j >= p{
			values[p] = values[j]
			p = j
		}

		if values[i] <= temp && i <= p{
			i++
		}

		if i<= p{
			values[p] = values[i]
			p = i
		}
	}

	values[p] = temp
	if p - left > 1{
		quickSort(values, left, p - 1)
	}
	if right - p > 1{
		quickSort(values, p + 1, right)
	}
}



func QuickSort(values []int){
	quickSort(values, 0, len(values) - 1)
}



// func main(){
// 	var datas = []int{7, 34, 21, 34, 5, 2, 1, 34}
// 	datas = []int{11}
// 	datas = []int{11, 11, 11, 11}
// 	// datas = []int{}  //为空的就会报错

// 	fmt.Println(datas)
// 	QuickSort(datas)
// 	fmt.Println(datas)
// }
